2.20.1 This exercise deals with recursive procedure calls. For the following problems,
the table has an assembly code fragment that computes the factorial of a number.
However, the entries in the table have errors, and you will be asked to fix these
errors. For number n, factorial of n = 1 x 2 x 3 x .. .. x n.
a. FACT: sw $ra, 4($sp)
sw $a0, 0($sp)
addi $sp, $sp, -8
slti $t0, $a0, 1
beq $t0, $0, L1
addi $v0, $0, 1
addi $sp, $sp, 8
jr $ra
L1: addi $a0, $a0, -1
jal FACT
addi $sp, $sp, 8
lw $a0, 0($sp)
lw $ra, 4($sp)
mul $v0, $a0, $v0
jr $ra

b. FACT: addi $sp, $sp, 8
sw $ra, 4($sp)
sw $a0, 0($sp)
add $s0, $0, $a0
slti $t0, $a0, 2
beq $t0, $0, L1
mul $v0, $s0, $v0
addi $sp, $sp, -8
jr $ra
L1: addi $a0, $a0, -1
jal FACT
addi $v0, $0, 1
lw $a0, 0($sp)
lw $ra, 4($sp)
addi $sp, $sp, -8
jr $ra
[5] <2.8> The MIPS assembly program above computes the factorial of a
given input. The integer input is passed through register $a0, and the result is returned
in register $v0. In the assembly code, there are a few errors. Correct the MIPS errors.
 
 
View Solution
 
 
 
<< Back Next >>